Software may be developed using software development pipelines, which break the development process into discrete stages. Software development pipelines may be useful for integrating the development efforts of multiple, disparate teams that each work on separate portions of a product. While developing software in a pipeline, it may be useful to assemble multiple program components, or artifacts, into a single item for future development purposes. These assembled components may be referred to as a build. Software development pipelines may have multiple artifacts that originate from the disparate teams. Builds within these pipelines may depend on the artifacts in distinct ways. For example, a container build may depend on a package manager and a specification file. Accounting for these dependencies is important when predicting how changes in one artifact affect downstream builds.